<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
</html>

<script>
  // 数学运算符
  // + - * / %
  // 只要用数学运算符，都会有一个隐式转换(会将不同类型的数据先尝试转成数字，再进行运算)

  // 1. +号
  // 在js里面+号有三层含义(加法运算/字符串拼接/正号)

  // 1.1 加法运算
  // var a = 1;
  // var b = 2;
  // console.log(a + b);
  // console.log(b + false);  // true -> 1  false -> 0
  // console.log(b + undefined); // NaN(not a number)

  // 1.2 字符串拼接
  // 当加号的两边，有任意一边是字符串，都会进行字符串的拼接
  // console.log("A" + "B");
  // console.log(100 + "100");
  // console.log(true + "100");
  // console.log([1,2,3] + "100");
  // var name = "张三";
  // console.log("我的名字是" + name);

  // 1.3 正号
  // 会将任意的类型去转成一个数字
  // console.log(+5);
  // console.log(+"5");  // 5
  // console.log(+"abc"); // NaN
  // console.log(+true);
  // console.log(+undefined); // undefined不能转成数字, NAN
  // console.log(+null); // 0

  // 特殊情况
  // console.log(0.1 + 0.2); // 0.30000000000000004
  // console.log(0.2 + 0.3);
  // 因为IEEE754标准,在处理浮点数(小数)的会有一定的误差
  // 小数在加的时候，先转成二进制，再转回来
  // console.log(0.1 + 0.2 === 0.3);

  // var bool = true;
  // console.log(bool + 0); // 1
  // console.log(bool + "123"); // true123
  // console.log(bool + true); // 2
  // console.log(bool + undefined); // NAN



  // 1.2 减乘除运算
  // 都会做隐式转换
  // console.log(9 - 2); // 7
  // console.log(9 - true); // 8
  // console.log("9" - 2); // 7
  // console.log("9" - undefined); // NAN
  // console.log(4 / 8); // 0.5
  // console.log(typeof(4 / 0)); // Infinity



  // 1.3 %取余运算(取模)
  // console.log(9 % 3); // 0
  // console.log(10 % 3); // 1
  // console.log(1 % 3); // 1

</script>